C++问题```求大虾们帮忙

来源:百度知道 编辑:UC知道 时间:2024/06/28 17:42:29
#include<iostream>
using namespace std;

template<class T>
class Stack
{
public:
void push(T a)
{
elements[p++]=a;
}
T pop()
{
return elements[--p];
}
private:
char elements[90];
static int p;
};
int Stack::p=0;

int main() {
Stack intStack;
Stack decStack;

intStack.push(1);
intStack.push(2);
intStack.push(3);
cout << intStack.pop() << endl;
cout << intStack.pop() << endl;
cout << intStack.pop() << endl;

decStack.push(1.1);
decStack.push(2.2);
decStack.push(3.3);
cout << decStack.pop() << endl;
cout << decStack.pop() << endl;
cout << decStack.pop() << endl;

return 0;

}

F:\学习\VC\万能的堆叠.cpp(128) : error C2955: 'Stack' :

int Stack::p=0;

Stack intStack;
Stack decStack;
改成:
template<class T>
int Stack<T>::p=0;

Stack<int> intStack;
Stack<double> decStack;

整个程序至少应该这样改一下:
#include<iostream>
using namespace std;

template<class T>
class Stack
{
public:
Stack(): p(0) {}
void push(T a)
{
elements[p++]=a;
}
T pop()
{
return elements[--p];
}
private:
T elements[90];
int p;
};

int main() {
Stack<int> intStack;
Stack<double> decStack;

intStack.push(1);
intStack.push(2);
intStack.push(3);
cout << intStack.pop() << endl;
cout << intStack.pop() << endl;
cout << intStack.pop() << endl;

decStack.push(1.1);
decStack.push(2.2);
decStack.push(3.3);
cout << decStack.po